<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow: flow::cfg::Static_config_manager&lt; Value_set &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceflow.html">flow</a></li><li class="navelem"><a class="el" href="namespaceflow_1_1cfg.html">cfg</a></li><li class="navelem"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">Static_config_manager</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classflow_1_1cfg_1_1Static__config__manager-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">flow::cfg::Static_config_manager&lt; Value_set &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">

<p>A <code><a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">Config_manager</a></code>-related adapter-style class that manages a simple config setup involving a single (though arbitrarily complex) <code><a class="el" href="classflow_1_1cfg_1_1Option__set.html" title="The core config-parsing facility, which builds parsing/comparison/output capabilities on top of a giv...">Option_set</a>&lt;&gt;</code>-ready raw value <code>struct</code> config store type <code>Value_set</code>, meant to be used only in static fashion.  
 <a href="classflow_1_1cfg_1_1Static__config__manager.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for flow::cfg::Static_config_manager&lt; Value_set &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classflow_1_1cfg_1_1Static__config__manager__inherit__graph.svg" width="194" height="203"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for flow::cfg::Static_config_manager&lt; Value_set &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classflow_1_1cfg_1_1Static__config__manager__coll__graph.svg" width="1362" height="668"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a3d2415bc18039b0faeddb7181a8eb61f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">allow_invalid_defaults_tag_t</a> { <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61fab3dc15779c4820ed5ee06299bedf718a">S_ALLOW_INVALID_DEFAULTS</a>
 }</td></tr>
<tr class="memdesc:a3d2415bc18039b0faeddb7181a8eb61f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tag type: indicates an <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> method must <em>allow</em> invalid defaults and only complain if the config source does not explicitly supply a valid value.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">More...</a><br /></td></tr>
<tr class="separator:a3d2415bc18039b0faeddb7181a8eb61f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c117c15e6e00244534099e97d104d35"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3c117c15e6e00244534099e97d104d35">Impl</a> = <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">Config_manager</a>&lt; Value_set, <a class="el" href="structflow_1_1cfg_1_1Null__value__set.html">Null_value_set</a> &gt;</td></tr>
<tr class="memdesc:a3c117c15e6e00244534099e97d104d35"><td class="mdescLeft">&#160;</td><td class="mdescRight">The class we <code>private</code>ly subclass (in HAS-A fashion, not IS-A fashion).  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a3c117c15e6e00244534099e97d104d35">More...</a><br /></td></tr>
<tr class="separator:a3c117c15e6e00244534099e97d104d35"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a77853af82c708377723671c92c6ab948"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a77853af82c708377723671c92c6ab948">Static_config_manager</a> (<a class="el" href="classflow_1_1log_1_1Logger.html">log::Logger</a> *logger_ptr, <a class="el" href="namespaceflow_1_1util.html#ae4dc52186797094b3040379ff19124c9">util::String_view</a> nickname, typename <a class="el" href="classflow_1_1cfg_1_1Option__set.html">Option_set</a>&lt; Value_set &gt;::Declare_options_func &amp;&amp;declare_opts_func_moved)</td></tr>
<tr class="memdesc:a77853af82c708377723671c92c6ab948"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> ready to read static config via <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> and access it via <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a>.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a77853af82c708377723671c92c6ab948">More...</a><br /></td></tr>
<tr class="separator:a77853af82c708377723671c92c6ab948"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacacd2c0eddaf68d0dc5e0c1407572f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5">apply</a> (const fs::path &amp;cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;final_validator_func)</td></tr>
<tr class="memdesc:aacacd2c0eddaf68d0dc5e0c1407572f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invoke this after construction to load the permanent set of static config from config sources including a static config file.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5">More...</a><br /></td></tr>
<tr class="separator:aacacd2c0eddaf68d0dc5e0c1407572f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44bcca3798f4ce5c86b16d5cbba96f0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a44bcca3798f4ce5c86b16d5cbba96f0d">apply</a> (<a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">allow_invalid_defaults_tag_t</a>, const fs::path &amp;cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;final_validator_func)</td></tr>
<tr class="memdesc:a44bcca3798f4ce5c86b16d5cbba96f0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to similar <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> tag; but skips the stringent check on individual defaults' validity.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a44bcca3798f4ce5c86b16d5cbba96f0d">More...</a><br /></td></tr>
<tr class="separator:a44bcca3798f4ce5c86b16d5cbba96f0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ad094865d998c52348375ffa07c8e70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a1ad094865d998c52348375ffa07c8e70">apply</a> (const fs::path &amp;cfg_path)</td></tr>
<tr class="memdesc:a1ad094865d998c52348375ffa07c8e70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to the other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> but with no inter-option validation (meaning the per-option validation passed to constructor is sufficient).  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a1ad094865d998c52348375ffa07c8e70">More...</a><br /></td></tr>
<tr class="separator:a1ad094865d998c52348375ffa07c8e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75b77fdd432ed8b254b36687b0cabc48"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a75b77fdd432ed8b254b36687b0cabc48">apply</a> (<a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">allow_invalid_defaults_tag_t</a>, const fs::path &amp;cfg_path)</td></tr>
<tr class="memdesc:a75b77fdd432ed8b254b36687b0cabc48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to similar <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> tag; but skips the stringent check on individual defaults' validity.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a75b77fdd432ed8b254b36687b0cabc48">More...</a><br /></td></tr>
<tr class="separator:a75b77fdd432ed8b254b36687b0cabc48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3576d329b71639e6acf38bb7a80e000"><td class="memItemLeft" align="right" valign="top">const Value_set &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000">values</a> () const</td></tr>
<tr class="memdesc:ae3576d329b71639e6acf38bb7a80e000"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns (always the same) reference to the managed <code>Value_set</code> structure.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000">More...</a><br /></td></tr>
<tr class="separator:ae3576d329b71639e6acf38bb7a80e000"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:a9e86f85d749892c9e55ae74e07e48a35"><td class="memTemplParams" colspan="2">template&lt;typename Value_set &gt; </td></tr>
<tr class="memitem:a9e86f85d749892c9e55ae74e07e48a35"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a9e86f85d749892c9e55ae74e07e48a35">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">Static_config_manager</a>&lt; Value_set &gt; &amp;val)</td></tr>
<tr class="memdesc:a9e86f85d749892c9e55ae74e07e48a35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes (briefly) a <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> to a standard output stream.  <a href="classflow_1_1cfg_1_1Static__config__manager.html#a9e86f85d749892c9e55ae74e07e48a35">More...</a><br /></td></tr>
<tr class="separator:a9e86f85d749892c9e55ae74e07e48a35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header related_classflow_1_1cfg_1_1Config__manager"><td colspan="2" onclick="javascript:toggleInherit('related_classflow_1_1cfg_1_1Config__manager')"><img src="closed.png" alt="-"/>&#160;Related Functions inherited from <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">flow::cfg::Config_manager&lt; Value_set, Null_value_set &gt;</a></td></tr>
<tr class="memitem:a453d83bf1e8b57b1aaff511fbe913ecc inherit related_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a453d83bf1e8b57b1aaff511fbe913ecc">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">Config_manager</a>&lt; S_d_value_set... &gt; &amp;val)</td></tr>
<tr class="memdesc:a453d83bf1e8b57b1aaff511fbe913ecc inherit related_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes (briefly) a Config_manager to a standard output stream.  <a href="classflow_1_1cfg_1_1Config__manager.html#a453d83bf1e8b57b1aaff511fbe913ecc">More...</a><br /></td></tr>
<tr class="separator:a453d83bf1e8b57b1aaff511fbe913ecc inherit related_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classflow_1_1cfg_1_1Config__manager"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classflow_1_1cfg_1_1Config__manager')"><img src="closed.png" alt="-"/>&#160;Private Types inherited from <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">flow::cfg::Config_manager&lt; Value_set, Null_value_set &gt;</a></td></tr>
<tr class="memitem:a6768eb0c92bd11fd84986058903b10d4 inherit pub_types_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4">allow_invalid_defaults_tag_t</a> </td></tr>
<tr class="memdesc:a6768eb0c92bd11fd84986058903b10d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tag type: indicates an <code>apply_*()</code> method must <em>allow</em> invalid defaults and only complain if the config source does not explicitly supply a valid value.  <a href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4">More...</a><br /></td></tr>
<tr class="separator:a6768eb0c92bd11fd84986058903b10d4 inherit pub_types_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab501967b40259c1a29264af1ad17baf2 inherit pub_types_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ab501967b40259c1a29264af1ad17baf2">On_dynamic_change_func</a> = <a class="el" href="classflow_1_1Function.html">Function</a>&lt; void()&gt;</td></tr>
<tr class="memdesc:ab501967b40259c1a29264af1ad17baf2 inherit pub_types_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for a callback to execute on dynamic config change.  <a href="classflow_1_1cfg_1_1Config__manager.html#ab501967b40259c1a29264af1ad17baf2">More...</a><br /></td></tr>
<tr class="separator:ab501967b40259c1a29264af1ad17baf2 inherit pub_types_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classflow_1_1cfg_1_1Config__manager"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classflow_1_1cfg_1_1Config__manager')"><img src="closed.png" alt="-"/>&#160;Private Member Functions inherited from <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">flow::cfg::Config_manager&lt; Value_set, Null_value_set &gt;</a></td></tr>
<tr class="memitem:ad59bfabf66e01922542629bae77508ad inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ad59bfabf66e01922542629bae77508ad">Config_manager</a> (<a class="el" href="classflow_1_1log_1_1Logger.html">log::Logger</a> *logger_ptr, <a class="el" href="namespaceflow_1_1util.html#ae4dc52186797094b3040379ff19124c9">util::String_view</a> nickname, typename <a class="el" href="classflow_1_1cfg_1_1Option__set.html">Option_set</a>&lt; S_d_value_set &gt;::Declare_options_func &amp;&amp;... declare_opts_func_moved)</td></tr>
<tr class="memdesc:ad59bfabf66e01922542629bae77508ad inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a Config_manager ready to read initial config via <code>apply_*()</code> and other setup methods; and further capable of both static and dynamic config.  <a href="classflow_1_1cfg_1_1Config__manager.html#ad59bfabf66e01922542629bae77508ad">More...</a><br /></td></tr>
<tr class="separator:ad59bfabf66e01922542629bae77508ad inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22bfec8082d0c7b5dff9ee7e98865707 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707">apply_static</a> (const fs::path &amp;static_cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;... final_validator_func, <a class="el" href="classbool.html">bool</a> commit=true)</td></tr>
<tr class="memdesc:a22bfec8082d0c7b5dff9ee7e98865707 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invoke this after construction to load the permanent set of static config from config sources including a static config file; if you are also using dynamic config, see <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304" title="If you use dynamic config, and you allow for initial values for dynamic options to be read from the s...">apply_static_and_dynamic()</a> as a <em>potential</em> alternative.  <a href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707">More...</a><br /></td></tr>
<tr class="separator:a22bfec8082d0c7b5dff9ee7e98865707 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af027c6f4b595f1f8ebbd6d41ad705f5e inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#af027c6f4b595f1f8ebbd6d41ad705f5e">apply_static</a> (<a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4">allow_invalid_defaults_tag_t</a>, const fs::path &amp;static_cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;... final_validator_func, <a class="el" href="classbool.html">bool</a> commit=true)</td></tr>
<tr class="memdesc:af027c6f4b595f1f8ebbd6d41ad705f5e inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply_static()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4" title="Tag type: indicates an apply_*() method must allow invalid defaults and only complain if the config s...">allow_invalid_defaults_tag_t</a> tag; but skips the stringent check on individual defaults' validity.  <a href="classflow_1_1cfg_1_1Config__manager.html#af027c6f4b595f1f8ebbd6d41ad705f5e">More...</a><br /></td></tr>
<tr class="separator:af027c6f4b595f1f8ebbd6d41ad705f5e inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d9811d1b4aab2c4ea3e6813d4161304 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304">apply_static_and_dynamic</a> (const fs::path &amp;cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; S_d_value_set &gt;::Type &amp;... final_validator_func, <a class="el" href="classbool.html">bool</a> commit=true)</td></tr>
<tr class="memdesc:a9d9811d1b4aab2c4ea3e6813d4161304 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">If you use dynamic config, <em>and</em> you allow for initial values for dynamic options to be read from the same file as the static config values, then invoke this instead of <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply_static()</a>.  <a href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304">More...</a><br /></td></tr>
<tr class="separator:a9d9811d1b4aab2c4ea3e6813d4161304 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d85fa5a1ed933c9b85444ddb9a416b1 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a5d85fa5a1ed933c9b85444ddb9a416b1">apply_static_and_dynamic</a> (<a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4">allow_invalid_defaults_tag_t</a>, const fs::path &amp;cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; S_d_value_set &gt;::Type &amp;... final_validator_func, <a class="el" href="classbool.html">bool</a> commit=true)</td></tr>
<tr class="memdesc:a5d85fa5a1ed933c9b85444ddb9a416b1 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304" title="If you use dynamic config, and you allow for initial values for dynamic options to be read from the s...">apply_static_and_dynamic()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4" title="Tag type: indicates an apply_*() method must allow invalid defaults and only complain if the config s...">allow_invalid_defaults_tag_t</a> tag; but skips the stringent check on individual defaults' validity.  <a href="classflow_1_1cfg_1_1Config__manager.html#a5d85fa5a1ed933c9b85444ddb9a416b1">More...</a><br /></td></tr>
<tr class="separator:a5d85fa5a1ed933c9b85444ddb9a416b1 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26712af2d38d3afbeb52d21b7012a03c inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a26712af2d38d3afbeb52d21b7012a03c">apply_dynamic</a> (const fs::path &amp;dynamic_cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;... final_validator_func, <a class="el" href="classbool.html">bool</a> commit=true)</td></tr>
<tr class="memdesc:a26712af2d38d3afbeb52d21b7012a03c inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load the first or subsequent set of dynamic config from config source including a dynamic config file.  <a href="classflow_1_1cfg_1_1Config__manager.html#a26712af2d38d3afbeb52d21b7012a03c">More...</a><br /></td></tr>
<tr class="separator:a26712af2d38d3afbeb52d21b7012a03c inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2503b020137aca00a8ee4b81fc921750 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a2503b020137aca00a8ee4b81fc921750">apply_dynamic</a> (<a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4">allow_invalid_defaults_tag_t</a>, const fs::path &amp;dynamic_cfg_path, const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;... final_validator_func, <a class="el" href="classbool.html">bool</a> commit=true)</td></tr>
<tr class="memdesc:a2503b020137aca00a8ee4b81fc921750 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a26712af2d38d3afbeb52d21b7012a03c" title="Load the first or subsequent set of dynamic config from config source including a dynamic config file...">apply_dynamic()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6768eb0c92bd11fd84986058903b10d4" title="Tag type: indicates an apply_*() method must allow invalid defaults and only complain if the config s...">allow_invalid_defaults_tag_t</a> tag; except that &ndash; applicably only to the initial <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a26712af2d38d3afbeb52d21b7012a03c" title="Load the first or subsequent set of dynamic config from config source including a dynamic config file...">apply_dynamic()</a> without a preceding <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304" title="If you use dynamic config, and you allow for initial values for dynamic options to be read from the s...">apply_static_and_dynamic()</a> &ndash; skips the stringent check on individual defaults' validity.  <a href="classflow_1_1cfg_1_1Config__manager.html#a2503b020137aca00a8ee4b81fc921750">More...</a><br /></td></tr>
<tr class="separator:a2503b020137aca00a8ee4b81fc921750 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1ab5cefe86e6aaa0518d675f309907e inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ac1ab5cefe86e6aaa0518d675f309907e">reject_candidates</a> ()</td></tr>
<tr class="memdesc:ac1ab5cefe86e6aaa0518d675f309907e inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel a not-yet-canonicalized (incomplete) multi-source update, if one is in progress.  <a href="classflow_1_1cfg_1_1Config__manager.html#ac1ab5cefe86e6aaa0518d675f309907e">More...</a><br /></td></tr>
<tr class="separator:ac1ab5cefe86e6aaa0518d675f309907e inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76c7224711ef8a51c7005629e4eae6e7 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a76c7224711ef8a51c7005629e4eae6e7">all_static_values</a> (const Value_set **... value_set_or_null) const</td></tr>
<tr class="memdesc:a76c7224711ef8a51c7005629e4eae6e7 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Emit a pointer to each permanently set static config value set; the same pointers are emitted throughout for each of the <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9c07f711e98435d00420277f1c20be75" title="The number of static value sets (including any Null_value_sets).">S_N_S_VALUE_SETS</a> static config slots.  <a href="classflow_1_1cfg_1_1Config__manager.html#a76c7224711ef8a51c7005629e4eae6e7">More...</a><br /></td></tr>
<tr class="separator:a76c7224711ef8a51c7005629e4eae6e7 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a616c39cdf1c6f7f4d2af3a3055edf486 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a616c39cdf1c6f7f4d2af3a3055edf486">all_static_values_candidates</a> (const Value_set **... value_set_or_null) const</td></tr>
<tr class="memdesc:a616c39cdf1c6f7f4d2af3a3055edf486 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a76c7224711ef8a51c7005629e4eae6e7" title="Emit a pointer to each permanently set static config value set; the same pointers are emitted through...">all_static_values()</a>, but if called from within a validator function passed to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply_static()</a> or <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304" title="If you use dynamic config, and you allow for initial values for dynamic options to be read from the s...">apply_static_and_dynamic()</a>, then for any static value set for which values have been parsed and validated (but not yet applied) so far, a pointer to the parsed values <em>candidate</em> will be emitted instead.  <a href="classflow_1_1cfg_1_1Config__manager.html#a616c39cdf1c6f7f4d2af3a3055edf486">More...</a><br /></td></tr>
<tr class="separator:a616c39cdf1c6f7f4d2af3a3055edf486 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8431806f82bed676f5fedb3b64f67245 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">const Value_set &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a8431806f82bed676f5fedb3b64f67245">static_values</a> (size_t s_value_set_idx) const</td></tr>
<tr class="memdesc:a8431806f82bed676f5fedb3b64f67245 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a76c7224711ef8a51c7005629e4eae6e7" title="Emit a pointer to each permanently set static config value set; the same pointers are emitted through...">all_static_values()</a>, but obtains the static config in <em>one</em> specified slot as opposed to all of them.  <a href="classflow_1_1cfg_1_1Config__manager.html#a8431806f82bed676f5fedb3b64f67245">More...</a><br /></td></tr>
<tr class="separator:a8431806f82bed676f5fedb3b64f67245 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae034a71792f952256c18e385475627d1 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">const Value_set &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ae034a71792f952256c18e385475627d1">static_values_candidate</a> (size_t s_value_set_idx) const</td></tr>
<tr class="memdesc:ae034a71792f952256c18e385475627d1 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a8431806f82bed676f5fedb3b64f67245" title="Similar to all_static_values(), but obtains the static config in one specified slot as opposed to all...">static_values()</a>, but if called from within a validator function passed to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply_static()</a> or <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9d9811d1b4aab2c4ea3e6813d4161304" title="If you use dynamic config, and you allow for initial values for dynamic options to be read from the s...">apply_static_and_dynamic()</a>, then the parsed values <em>candidate</em> will be returned, instead, if values have been parsed and validated for the static value set but have not yet been applied.  <a href="classflow_1_1cfg_1_1Config__manager.html#ae034a71792f952256c18e385475627d1">More...</a><br /></td></tr>
<tr class="separator:ae034a71792f952256c18e385475627d1 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6afb8620600dcb54d41211ef68859f93 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6afb8620600dcb54d41211ef68859f93">all_dynamic_values</a> (typename Value_set::Const_ptr *... value_set_or_null) const</td></tr>
<tr class="memdesc:a6afb8620600dcb54d41211ef68859f93 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain ref-counted pointers to each currently-canonical set of dynamic config; each pointed-at <code>struct</code> is set permanently; while another call may return a different pointer if config is changed dynamically in the meantime (for that slot).  <a href="classflow_1_1cfg_1_1Config__manager.html#a6afb8620600dcb54d41211ef68859f93">More...</a><br /></td></tr>
<tr class="separator:a6afb8620600dcb54d41211ef68859f93 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2239443cf48bfdaa78c95af935e1d0f inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">Value_set::Const_ptr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ac2239443cf48bfdaa78c95af935e1d0f">dynamic_values</a> (size_t d_value_set_idx) const</td></tr>
<tr class="memdesc:ac2239443cf48bfdaa78c95af935e1d0f inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a6afb8620600dcb54d41211ef68859f93" title="Obtain ref-counted pointers to each currently-canonical set of dynamic config; each pointed-at struct...">all_dynamic_values()</a> but obtains the dynamic config in <em>one</em> specified slot as opposed to all of them.  <a href="classflow_1_1cfg_1_1Config__manager.html#ac2239443cf48bfdaa78c95af935e1d0f">More...</a><br /></td></tr>
<tr class="separator:ac2239443cf48bfdaa78c95af935e1d0f inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a978295c03998af212b464061d780520b inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">On_dynamic_change_func_handle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a978295c03998af212b464061d780520b">register_dynamic_change_listener</a> (size_t d_value_set_idx, <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ab501967b40259c1a29264af1ad17baf2">On_dynamic_change_func</a> &amp;&amp;on_dynamic_change_func_moved)</td></tr>
<tr class="memdesc:a978295c03998af212b464061d780520b inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves the given callback; next time <code>apply_dynamic(commit = true)</code> or <code>apply_static_and_dynamic(commit = true)</code> detects at least one changed (or initially set) option value in the specified slot, it will execute this and any other previously registered such callbacks synchronously.  <a href="classflow_1_1cfg_1_1Config__manager.html#a978295c03998af212b464061d780520b">More...</a><br /></td></tr>
<tr class="separator:a978295c03998af212b464061d780520b inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e0dfe1e8f57d974a775f1320bd9856d inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a4e0dfe1e8f57d974a775f1320bd9856d">unregister_dynamic_change_listener</a> (const On_dynamic_change_func_handle &amp;handle)</td></tr>
<tr class="memdesc:a4e0dfe1e8f57d974a775f1320bd9856d inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a previously registered dynamic change callback.  <a href="classflow_1_1cfg_1_1Config__manager.html#a4e0dfe1e8f57d974a775f1320bd9856d">More...</a><br /></td></tr>
<tr class="separator:a4e0dfe1e8f57d974a775f1320bd9856d inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19ae9775f51953805ea08086c276a78d inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a19ae9775f51953805ea08086c276a78d">state_to_ostream</a> (std::ostream &amp;os) const</td></tr>
<tr class="memdesc:a19ae9775f51953805ea08086c276a78d inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a human-targeted long-form summary of our contents, doubling as a usage message and a dump of current values where applicable.  <a href="classflow_1_1cfg_1_1Config__manager.html#a19ae9775f51953805ea08086c276a78d">More...</a><br /></td></tr>
<tr class="separator:a19ae9775f51953805ea08086c276a78d inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a220535219634c62ed2a580934c76c481 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a220535219634c62ed2a580934c76c481">log_state</a> (<a class="el" href="namespaceflow_1_1log.html#a5c602384e6fe9d7642740ac2fae4ad04">log::Sev</a> sev=log::Sev::S_INFO) const</td></tr>
<tr class="memdesc:a220535219634c62ed2a580934c76c481 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logs what <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a19ae9775f51953805ea08086c276a78d" title="Prints a human-targeted long-form summary of our contents, doubling as a usage message and a dump of ...">state_to_ostream()</a> would print.  <a href="classflow_1_1cfg_1_1Config__manager.html#a220535219634c62ed2a580934c76c481">More...</a><br /></td></tr>
<tr class="separator:a220535219634c62ed2a580934c76c481 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5cda6ace05e8bbe52a5129ed1c0720c inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ad5cda6ace05e8bbe52a5129ed1c0720c">help_to_ostream</a> (std::ostream &amp;os) const</td></tr>
<tr class="memdesc:ad5cda6ace05e8bbe52a5129ed1c0720c inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a human-targeted long-form usage message that includes all options with their descriptions and defaults.  <a href="classflow_1_1cfg_1_1Config__manager.html#ad5cda6ace05e8bbe52a5129ed1c0720c">More...</a><br /></td></tr>
<tr class="separator:ad5cda6ace05e8bbe52a5129ed1c0720c inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0192ddc2cc7302bdc8720ee56a395c02 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a0192ddc2cc7302bdc8720ee56a395c02">log_help</a> (<a class="el" href="namespaceflow_1_1log.html#a5c602384e6fe9d7642740ac2fae4ad04">log::Sev</a> sev=log::Sev::S_INFO) const</td></tr>
<tr class="memdesc:a0192ddc2cc7302bdc8720ee56a395c02 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logs what <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ad5cda6ace05e8bbe52a5129ed1c0720c" title="Prints a human-targeted long-form usage message that includes all options with their descriptions and...">help_to_ostream()</a> would print.  <a href="classflow_1_1cfg_1_1Config__manager.html#a0192ddc2cc7302bdc8720ee56a395c02">More...</a><br /></td></tr>
<tr class="separator:a0192ddc2cc7302bdc8720ee56a395c02 inherit pub_methods_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classflow_1_1log_1_1Log__context"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classflow_1_1log_1_1Log__context')"><img src="closed.png" alt="-"/>&#160;Private Member Functions inherited from <a class="el" href="classflow_1_1log_1_1Log__context.html">flow::log::Log_context</a></td></tr>
<tr class="memitem:ae7100d2dd130d8f130e3e64fdb1f4fd9 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#ae7100d2dd130d8f130e3e64fdb1f4fd9">Log_context</a> (<a class="el" href="classflow_1_1log_1_1Logger.html">Logger</a> *logger=0)</td></tr>
<tr class="memdesc:ae7100d2dd130d8f130e3e64fdb1f4fd9 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs <a class="el" href="classflow_1_1log_1_1Log__context.html" title="Convenience class that simply stores a Logger and/or Component passed into a constructor; and returns...">Log_context</a> by storing the given pointer to a <a class="el" href="classflow_1_1log_1_1Logger.html" title="Interface that the user should implement, passing the implementing Logger into logging classes (Flow&#39;...">Logger</a> and a null <a class="el" href="classflow_1_1log_1_1Component.html" title="A light-weight class, each object storing a component payload encoding an enum value from enum type o...">Component</a>.  <a href="classflow_1_1log_1_1Log__context.html#ae7100d2dd130d8f130e3e64fdb1f4fd9">More...</a><br /></td></tr>
<tr class="separator:ae7100d2dd130d8f130e3e64fdb1f4fd9 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1ac7f30ab442c3c6aa6079335df6c9a inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memTemplParams" colspan="2">template&lt;typename Component_payload &gt; </td></tr>
<tr class="memitem:af1ac7f30ab442c3c6aa6079335df6c9a inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#af1ac7f30ab442c3c6aa6079335df6c9a">Log_context</a> (<a class="el" href="classflow_1_1log_1_1Logger.html">Logger</a> *logger, Component_payload component_payload)</td></tr>
<tr class="memdesc:af1ac7f30ab442c3c6aa6079335df6c9a inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs <a class="el" href="classflow_1_1log_1_1Log__context.html" title="Convenience class that simply stores a Logger and/or Component passed into a constructor; and returns...">Log_context</a> by storing the given pointer to a <a class="el" href="classflow_1_1log_1_1Logger.html" title="Interface that the user should implement, passing the implementing Logger into logging classes (Flow&#39;...">Logger</a> and a new <a class="el" href="classflow_1_1log_1_1Component.html" title="A light-weight class, each object storing a component payload encoding an enum value from enum type o...">Component</a> storing the specified generically typed payload (an <code>enum</code> value).  <a href="classflow_1_1log_1_1Log__context.html#af1ac7f30ab442c3c6aa6079335df6c9a">More...</a><br /></td></tr>
<tr class="separator:af1ac7f30ab442c3c6aa6079335df6c9a inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c57a7f44959a01ca9a1c948a6686cc0 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#a5c57a7f44959a01ca9a1c948a6686cc0">Log_context</a> (const <a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;src)</td></tr>
<tr class="memdesc:a5c57a7f44959a01ca9a1c948a6686cc0 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor that stores equal <code>Logger*</code> and <a class="el" href="classflow_1_1log_1_1Component.html" title="A light-weight class, each object storing a component payload encoding an enum value from enum type o...">Component</a> values as the source.  <a href="classflow_1_1log_1_1Log__context.html#a5c57a7f44959a01ca9a1c948a6686cc0">More...</a><br /></td></tr>
<tr class="separator:a5c57a7f44959a01ca9a1c948a6686cc0 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d4e624833d96bdafa1485ffff472509 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#a3d4e624833d96bdafa1485ffff472509">Log_context</a> (<a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:a3d4e624833d96bdafa1485ffff472509 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor that makes this equal to <code>src</code>, while the latter becomes as-if default-constructed.  <a href="classflow_1_1log_1_1Log__context.html#a3d4e624833d96bdafa1485ffff472509">More...</a><br /></td></tr>
<tr class="separator:a3d4e624833d96bdafa1485ffff472509 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d628315d5a93908d47a281980d3113e inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#a5d628315d5a93908d47a281980d3113e">operator=</a> (const <a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;src)</td></tr>
<tr class="memdesc:a5d628315d5a93908d47a281980d3113e inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator that behaves similarly to the copy constructor.  <a href="classflow_1_1log_1_1Log__context.html#a5d628315d5a93908d47a281980d3113e">More...</a><br /></td></tr>
<tr class="separator:a5d628315d5a93908d47a281980d3113e inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae857197aecba8606c32296bc7bec308 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#aae857197aecba8606c32296bc7bec308">operator=</a> (<a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:aae857197aecba8606c32296bc7bec308 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment operator that behaves similarly to the move constructor.  <a href="classflow_1_1log_1_1Log__context.html#aae857197aecba8606c32296bc7bec308">More...</a><br /></td></tr>
<tr class="separator:aae857197aecba8606c32296bc7bec308 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6bb8e4250586425631ef80063caf155 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#aa6bb8e4250586425631ef80063caf155">swap</a> (<a class="el" href="classflow_1_1log_1_1Log__context.html">Log_context</a> &amp;other)</td></tr>
<tr class="memdesc:aa6bb8e4250586425631ef80063caf155 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps <a class="el" href="classflow_1_1log_1_1Logger.html" title="Interface that the user should implement, passing the implementing Logger into logging classes (Flow&#39;...">Logger</a> pointers and <a class="el" href="classflow_1_1log_1_1Component.html" title="A light-weight class, each object storing a component payload encoding an enum value from enum type o...">Component</a> objects held by <code>*this</code> and <code>other</code>.  <a href="classflow_1_1log_1_1Log__context.html#aa6bb8e4250586425631ef80063caf155">More...</a><br /></td></tr>
<tr class="separator:aa6bb8e4250586425631ef80063caf155 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4db395042b065b00398cd59845dcb4d inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflow_1_1log_1_1Logger.html">Logger</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#af4db395042b065b00398cd59845dcb4d">get_logger</a> () const</td></tr>
<tr class="memdesc:af4db395042b065b00398cd59845dcb4d inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the stored <a class="el" href="classflow_1_1log_1_1Logger.html" title="Interface that the user should implement, passing the implementing Logger into logging classes (Flow&#39;...">Logger</a> pointer, particularly as many <code>FLOW_LOG_*()</code> macros expect.  <a href="classflow_1_1log_1_1Log__context.html#af4db395042b065b00398cd59845dcb4d">More...</a><br /></td></tr>
<tr class="separator:af4db395042b065b00398cd59845dcb4d inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a5fef42dc2cedf3c0d1a6e83beb2948 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classflow_1_1log_1_1Component.html">Component</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1log_1_1Log__context.html#a8a5fef42dc2cedf3c0d1a6e83beb2948">get_log_component</a> () const</td></tr>
<tr class="memdesc:a8a5fef42dc2cedf3c0d1a6e83beb2948 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns reference to the stored <a class="el" href="classflow_1_1log_1_1Component.html" title="A light-weight class, each object storing a component payload encoding an enum value from enum type o...">Component</a> object, particularly as many <code>FLOW_LOG_*()</code> macros expect.  <a href="classflow_1_1log_1_1Log__context.html#a8a5fef42dc2cedf3c0d1a6e83beb2948">More...</a><br /></td></tr>
<tr class="separator:a8a5fef42dc2cedf3c0d1a6e83beb2948 inherit pub_methods_classflow_1_1log_1_1Log__context"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classflow_1_1cfg_1_1Config__manager"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classflow_1_1cfg_1_1Config__manager')"><img src="closed.png" alt="-"/>&#160;Private Attributes inherited from <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">flow::cfg::Config_manager&lt; Value_set, Null_value_set &gt;</a></td></tr>
<tr class="memitem:a68da387dad566805b969aded698661cb inherit pub_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a68da387dad566805b969aded698661cb">m_nickname</a></td></tr>
<tr class="memdesc:a68da387dad566805b969aded698661cb inherit pub_attribs_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <code>nickname</code> ctor arg.  <a href="classflow_1_1cfg_1_1Config__manager.html#a68da387dad566805b969aded698661cb">More...</a><br /></td></tr>
<tr class="separator:a68da387dad566805b969aded698661cb inherit pub_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classflow_1_1cfg_1_1Config__manager')"><img src="closed.png" alt="-"/>&#160;Static Private Attributes inherited from <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">flow::cfg::Config_manager&lt; Value_set, Null_value_set &gt;</a></td></tr>
<tr class="memitem:ad49d54a2ae34b14c276cf3de05c3c4f8 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">static constexpr size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ad49d54a2ae34b14c276cf3de05c3c4f8">S_N_VALUE_SETS</a></td></tr>
<tr class="memdesc:ad49d54a2ae34b14c276cf3de05c3c4f8 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of template params in this Config_manager instantiation. It must be even and positive.  <a href="classflow_1_1cfg_1_1Config__manager.html#ad49d54a2ae34b14c276cf3de05c3c4f8">More...</a><br /></td></tr>
<tr class="separator:ad49d54a2ae34b14c276cf3de05c3c4f8 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c07f711e98435d00420277f1c20be75 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">static constexpr size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a9c07f711e98435d00420277f1c20be75">S_N_S_VALUE_SETS</a></td></tr>
<tr class="memdesc:a9c07f711e98435d00420277f1c20be75 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of static value sets (including any <code>Null_value_set</code>s).  <a href="classflow_1_1cfg_1_1Config__manager.html#a9c07f711e98435d00420277f1c20be75">More...</a><br /></td></tr>
<tr class="separator:a9c07f711e98435d00420277f1c20be75 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac26c2d6efe1670e940badccb3fdea609 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memItemLeft" align="right" valign="top">static constexpr size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ac26c2d6efe1670e940badccb3fdea609">S_N_D_VALUE_SETS</a></td></tr>
<tr class="memdesc:ac26c2d6efe1670e940badccb3fdea609 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of dynamic value sets (including any <code>Null_value_set</code>s).  <a href="classflow_1_1cfg_1_1Config__manager.html#ac26c2d6efe1670e940badccb3fdea609">More...</a><br /></td></tr>
<tr class="separator:ac26c2d6efe1670e940badccb3fdea609 inherit pub_static_attribs_classflow_1_1cfg_1_1Config__manager"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename Value_set&gt;<br />
class flow::cfg::Static_config_manager&lt; Value_set &gt;</div><p >A <code><a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">Config_manager</a></code>-related adapter-style class that manages a simple config setup involving a single (though arbitrarily complex) <code><a class="el" href="classflow_1_1cfg_1_1Option__set.html" title="The core config-parsing facility, which builds parsing/comparison/output capabilities on top of a giv...">Option_set</a>&lt;&gt;</code>-ready raw value <code>struct</code> config store type <code>Value_set</code>, meant to be used only in static fashion. </p>
<p >That is to say, the parsed config values are not meant to be accessed <em>while</em> the config is being read from file.</p>
<p >If you desire dynamic config (which can be read from file(s) at any time), and/or you need to manage more than one config <code>struct</code> (e.g., you're controlling 2+ entirely separate modules), then please use <a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">Config_manager</a> which supports all that. (You can also develop your own handling of <code><a class="el" href="classflow_1_1cfg_1_1Option__set.html" title="The core config-parsing facility, which builds parsing/comparison/output capabilities on top of a giv...">Option_set</a>&lt;Value_set&gt;</code> instead. See <a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">Config_manager</a> doc header.)</p>
<p >The life cycle and usage are simple. Define your <code>Value_set</code> (see <a class="el" href="classflow_1_1cfg_1_1Option__set.html" title="The core config-parsing facility, which builds parsing/comparison/output capabilities on top of a giv...">Option_set</a> doc header for formal requirements, but basically you'll need a <code>struct</code>, an option-defining function using <a class="el" href="option__set_8hpp.html#ae6bc0bcf28a53682a4c9a5fbe3a3837f" title="Macro the user must use, as prescribed in the flow::cfg::Option_set constructor doc header discussing...">FLOW_CFG_OPTION_SET_DECLARE_OPTION()</a>, and possibly an inter-option validator function). Construct the <code><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a>&lt;Value_set&gt;</code>. Call <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> to read a file. (You can do this more than once, potentially for different files. As of this writing only files are supported, but adding command line parsing would be an incremental change.) Then, call <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> to get the reference to the immutable parsed <code>Value_set</code>. This reference can be passed around the application; <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> will always return the same reference. Technically you could call <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> even after using <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a>; but it is not thread-safe to do so while accessing config values which would change concurrently with no protection.</p>
<p >Also you may create a <code>const</code> (immutable) <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> via its constructor and then just use it to output a help message (<a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a0192ddc2cc7302bdc8720ee56a395c02" title="Logs what help_to_ostream() would print.">log_help()</a> or <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#ad5cda6ace05e8bbe52a5129ed1c0720c" title="Prints a human-targeted long-form usage message that includes all options with their descriptions and...">help_to_ostream()</a>). This could be used with your program's <code>--help</code> option or similar, and that's it (no parsing takes place).</p>
<div class="fragment"><div class="line"><span class="comment">// Example of a Static_config_manager created just to log the help, and that&#39;s it.</span></div>
<div class="line"><a class="code hl_class" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager&lt;Static_value_set&gt;</a></div>
<div class="line">  (<a class="code hl_function" href="classflow_1_1log_1_1Log__context.html#af4db395042b065b00398cd59845dcb4d">get_logger</a>(), <span class="stringliteral">&quot;cfg&quot;</span>, &amp;static_cfg_declare_opts)</div>
<div class="line">  .<a class="code hl_function" href="classflow_1_1cfg_1_1Config__manager.html#a0192ddc2cc7302bdc8720ee56a395c02">log_help</a>();</div>
<div class="ttc" id="aclassflow_1_1cfg_1_1Config__manager_html_a0192ddc2cc7302bdc8720ee56a395c02"><div class="ttname"><a href="classflow_1_1cfg_1_1Config__manager.html#a0192ddc2cc7302bdc8720ee56a395c02">flow::cfg::Config_manager::log_help</a></div><div class="ttdeci">void log_help(log::Sev sev=log::Sev::S_INFO) const</div><div class="ttdoc">Logs what help_to_ostream() would print.</div><div class="ttdef"><b>Definition:</b> <a href="cfg__manager_8hpp_source.html#l02700">cfg_manager.hpp:2700</a></div></div>
<div class="ttc" id="aclassflow_1_1cfg_1_1Static__config__manager_html"><div class="ttname"><a href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a></div><div class="ttdoc">A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...</div><div class="ttdef"><b>Definition:</b> <a href="static__cfg__manager_8hpp_source.html#l00079">static_cfg_manager.hpp:81</a></div></div>
<div class="ttc" id="aclassflow_1_1log_1_1Log__context_html_af4db395042b065b00398cd59845dcb4d"><div class="ttname"><a href="classflow_1_1log_1_1Log__context.html#af4db395042b065b00398cd59845dcb4d">flow::log::Log_context::get_logger</a></div><div class="ttdeci">Logger * get_logger() const</div><div class="ttdoc">Returns the stored Logger pointer, particularly as many FLOW_LOG_*() macros expect.</div><div class="ttdef"><b>Definition:</b> <a href="log_8cpp_source.html#l00217">log.cpp:217</a></div></div>
</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd><a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">Config_manager</a> provides the optional <code>commit == false</code> mode in <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a22bfec8082d0c7b5dff9ee7e98865707" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply_static()</a>; this enables the "multi-source parsing and source skipping" described in its doc header. <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a>, to keep its mission simple, cuts off access to this feature, meaning implicitly it always takes <code>commit</code> to equal <code>true</code>. That is, it is expected you'll be loading static config from exactly one file/one <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> call per attempt. Your <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html#a5475ab0b6e93f2ccded2aa8690ace0a4" title="Short-hand for a function that takes a parsed config set (meaning all values are individually OK) and...">Final_validator_func::Type</a> <code>final_validator_func()</code> <em>should</em> return either <a class="el" href="namespaceflow_1_1cfg.html#a80b3319f3d3a657837d0d8b28d22ccc3a655ec6aa779cb1c799c9ba80f24e9567" title="The holistically-checked cumulative Value_set has no problems and shall be accepted into the candidat...">Final_validator_outcome::S_ACCEPT</a> or <a class="el" href="namespaceflow_1_1cfg.html#a80b3319f3d3a657837d0d8b28d22ccc3aec1a4aed91659725c96b0b8378dba316" title="The holistically-checked cumulative Value_set has invalid contents; the candidate shall be rejected,...">Final_validator_outcome::S_FAIL</a>. It <em>can</em> return <a class="el" href="namespaceflow_1_1cfg.html#a80b3319f3d3a657837d0d8b28d22ccc3ace64a8fc2c16fb21be22f603ef4d2eec" title="The holistically-checked cumulative Value_set has contents such that the validator function decided t...">Final_validator_outcome::S_SKIP</a>, but that would mean <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> will return <code>true</code> (success) but simply no-op (not update the canonical config as returned by <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a>).</dd></dl>
<h3>Rationale</h3>
<p ><a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">Config_manager</a> is in the author's opinion not difficult to use, but it <em>does</em> use template parameter packs (<code>typename... Value_set</code>), and its API can be somewhat difficult to grok when all you have is the aforementioned simple use case.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Value_set</td><td>The settings <code>struct</code> &ndash; see <a class="el" href="classflow_1_1cfg_1_1Option__set.html" title="The core config-parsing facility, which builds parsing/comparison/output capabilities on top of a giv...">Option_set</a> doc header for requirements. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00079">79</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a3c117c15e6e00244534099e97d104d35" name="a3c117c15e6e00244534099e97d104d35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c117c15e6e00244534099e97d104d35">&#9670;&nbsp;</a></span>Impl</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::Impl =  <a class="el" href="classflow_1_1cfg_1_1Config__manager.html">Config_manager</a>&lt;Value_set, <a class="el" href="structflow_1_1cfg_1_1Null__value__set.html">Null_value_set</a>&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The class we <code>private</code>ly subclass (in HAS-A fashion, not IS-A fashion). </p>
<p >It is <code>public</code> basically so that we can refer to it in various forwarding <code>using</code> method directives below. </p>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00100">100</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a3d2415bc18039b0faeddb7181a8eb61f" name="a3d2415bc18039b0faeddb7181a8eb61f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d2415bc18039b0faeddb7181a8eb61f">&#9670;&nbsp;</a></span>allow_invalid_defaults_tag_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">flow::cfg::Static_config_manager::allow_invalid_defaults_tag_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Tag type: indicates an <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> method must <em>allow</em> invalid defaults and only complain if the config source does not explicitly supply a valid value. </p>
<p >Otherwise the defaults themselves are also stringently checked regardless of whether they are overridden. This setting applies only to individual-option-validators. <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html" title="Utility/traits type to concisely work with final-validation functions when calling methods like Confi...">Final_validator_func</a> validation is orthogonal to this. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3d2415bc18039b0faeddb7181a8eb61fab3dc15779c4820ed5ee06299bedf718a" name="a3d2415bc18039b0faeddb7181a8eb61fab3dc15779c4820ed5ee06299bedf718a"></a>S_ALLOW_INVALID_DEFAULTS&#160;</td><td class="fielddoc"><p >Sole value for tag type <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a>. </p>
</td></tr>
</table>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00091">91</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a77853af82c708377723671c92c6ab948" name="a77853af82c708377723671c92c6ab948"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77853af82c708377723671c92c6ab948">&#9670;&nbsp;</a></span>Static_config_manager()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::Static_config_manager </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classflow_1_1log_1_1Logger.html">log::Logger</a> *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceflow_1_1util.html#ae4dc52186797094b3040379ff19124c9">util::String_view</a>&#160;</td>
          <td class="paramname"><em>nickname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classflow_1_1cfg_1_1Option__set.html">Option_set</a>&lt; Value_set &gt;::Declare_options_func &amp;&amp;&#160;</td>
          <td class="paramname"><em>declare_opts_func_moved</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructs a <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> ready to read static config via <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> and access it via <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a>. </p>
<h3>Logging assumption</h3>
<p ><code>*logger_ptr</code> is a standard logging arg. Note, though, that the class will assume that log verbosity may not have yet been configured &ndash; since this <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> may be the thing configuring it. Informal recommendations:</p><ul>
<li>You should let through INFO and WARNING messages in <code>*logger_ptr</code>.</li>
<li>If you plan to use <code>*this</code> only for <a class="el" href="classflow_1_1cfg_1_1Config__manager.html#a0192ddc2cc7302bdc8720ee56a395c02" title="Logs what help_to_ostream() would print.">log_help()</a> (such as in your <code>--help</code> implementation), you should <em>not</em> let through TRACE-or-more-verbose.</li>
<li>Once (and if) you engage any actual parsing (<a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>), TRACE may be helpful in debugging as usual.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>Logger to use for subsequently logging. </td></tr>
    <tr><td class="paramname">nickname</td><td>Brief string used for logging subsequently. </td></tr>
    <tr><td class="paramname">declare_opts_func_moved</td><td>The declare-options callback as required by <code><a class="el" href="classflow_1_1cfg_1_1Option__set.html" title="The core config-parsing facility, which builds parsing/comparison/output capabilities on top of a giv...">Option_set</a>&lt;Value_set&gt;</code> constructor; see its doc header for instructions. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00292">292</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a75b77fdd432ed8b254b36687b0cabc48" name="a75b77fdd432ed8b254b36687b0cabc48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b77fdd432ed8b254b36687b0cabc48">&#9670;&nbsp;</a></span>apply() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::apply </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">allow_invalid_defaults_tag_t</a>&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const fs::path &amp;&#160;</td>
          <td class="paramname"><em>cfg_path</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Identical to similar <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> tag; but skips the stringent check on individual defaults' validity. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> doc header and/or return-value doc just below.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cfg_path</td><td>See other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>. However the latter will return <code>false</code> if a default is invalid, even if file <code>cfg_path</code> explicitly sets it to a valid value. This tagged overload will not. </dd></dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00328">328</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<a id="a44bcca3798f4ce5c86b16d5cbba96f0d" name="a44bcca3798f4ce5c86b16d5cbba96f0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44bcca3798f4ce5c86b16d5cbba96f0d">&#9670;&nbsp;</a></span>apply() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::apply </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f">allow_invalid_defaults_tag_t</a>&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const fs::path &amp;&#160;</td>
          <td class="paramname"><em>cfg_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;&#160;</td>
          <td class="paramname"><em>final_validator_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Identical to similar <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> overload without <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> tag; but skips the stringent check on individual defaults' validity. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> doc header and/or return-value doc just below.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cfg_path</td><td>See other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>. </td></tr>
    <tr><td class="paramname">final_validator_func</td><td>See other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>. However the latter will return <code>false</code> if a default is invalid, even if file <code>cfg_path</code> explicitly sets it to a valid value. This tagged overload will not. </dd></dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00314">314</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<a id="a1ad094865d998c52348375ffa07c8e70" name="a1ad094865d998c52348375ffa07c8e70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ad094865d998c52348375ffa07c8e70">&#9670;&nbsp;</a></span>apply() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::apply </td>
          <td>(</td>
          <td class="paramtype">const fs::path &amp;&#160;</td>
          <td class="paramname"><em>cfg_path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Equivalent to the other <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> but with no inter-option validation (meaning the per-option validation passed to constructor is sufficient). </p>
<p >See also <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> overload with <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> tag.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cfg_path</td><td>File to read. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if and only if successfully parsed config source(s) and validated all settings; and defaults were also all individually valid. </dd></dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00322">322</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<a id="aacacd2c0eddaf68d0dc5e0c1407572f5" name="aacacd2c0eddaf68d0dc5e0c1407572f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aacacd2c0eddaf68d0dc5e0c1407572f5">&#9670;&nbsp;</a></span>apply() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::apply </td>
          <td>(</td>
          <td class="paramtype">const fs::path &amp;&#160;</td>
          <td class="paramname"><em>cfg_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const typename <a class="el" href="structflow_1_1cfg_1_1Final__validator__func.html">Final_validator_func</a>&lt; Value_set &gt;::Type &amp;&#160;</td>
          <td class="paramname"><em>final_validator_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Invoke this after construction to load the permanent set of static config from config sources including a static config file. </p>
<p >See also <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> overload with <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#a3d2415bc18039b0faeddb7181a8eb61f" title="Tag type: indicates an apply() method must allow invalid defaults and only complain if the config sou...">allow_invalid_defaults_tag_t</a> tag.</p>
<p >After this runs and succeeds, you may use <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> to access the loaded values (but see notes on <code>final_validator_func</code> arg and return value, regarding <a class="el" href="namespaceflow_1_1cfg.html#a80b3319f3d3a657837d0d8b28d22ccc3ace64a8fc2c16fb21be22f603ef4d2eec" title="The holistically-checked cumulative Value_set has contents such that the validator function decided t...">Final_validator_outcome::S_SKIP</a> w/r/t <code>final_validator_func</code> arg).</p>
<p >On failure returns <code>false</code>; else returns <code>true</code>. In the former case the overall state is equal to that at entry to the method. Tip: On failure you may want to exit program with error; or you can continue knowing that <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> will return default values according to <code>Value_set()</code> no-arg ctor. WARNING(s) logged given failure.</p>
<p >Before <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a>, or after it fails, the contents of what <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> returns will be the defaults from your <code>Value_set</code> structure in its constructed state. This may or may not have utility depending on your application.</p>
<p ><a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> will <em>not</em> be tolerant of unknown option names appearing in the config source.</p>
<dl class="section note"><dt>Note</dt><dd><code>final_validator_func()</code> can be made quite brief by using convenience macro <a class="el" href="cfg__manager__fwd_8hpp.html#a1e8c66781034dd50ad8e2de9c0c47e0e" title="Convenience macro particularly useful in the final_validator_func() callback taken by various Config_...">FLOW_CFG_OPT_CHECK_ASSERT()</a>. This will take care of most logging in most cases.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000015">Todo:</a></b></dt><dd>Add support for command line as a config source in addition to file(s), for static config in <a class="el" href="classflow_1_1cfg_1_1Config__manager.html" title="Manages a config setup, intended for a single daemon process, by maintaining 1 or more set(s) of stat...">cfg::Config_manager</a>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cfg_path</td><td>File to read. </td></tr>
    <tr><td class="paramname">final_validator_func</td><td>If parsing and individual-option-validation succeed, the method shall return success if <code>final_validator_func(V)</code> returns <a class="el" href="namespaceflow_1_1cfg.html#a80b3319f3d3a657837d0d8b28d22ccc3a655ec6aa779cb1c799c9ba80f24e9567" title="The holistically-checked cumulative Value_set has no problems and shall be accepted into the candidat...">Final_validator_outcome::S_ACCEPT</a> or <a class="el" href="namespaceflow_1_1cfg.html#a80b3319f3d3a657837d0d8b28d22ccc3ace64a8fc2c16fb21be22f603ef4d2eec" title="The holistically-checked cumulative Value_set has contents such that the validator function decided t...">Final_validator_outcome::S_SKIP</a>, where V is the parsed <code>Value_set</code>; and in the former case <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> post-this-method will return V. Informally: Please place individual-option validation into <a class="el" href="option__set_8hpp.html#ae6bc0bcf28a53682a4c9a5fbe3a3837f" title="Macro the user must use, as prescribed in the flow::cfg::Option_set constructor doc header discussing...">FLOW_CFG_OPTION_SET_DECLARE_OPTION()</a> invocations; only use <code>final_validator_func()</code> for internal consistency checks (if any). Informally: It is unlikely, with <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a>, that it should return SKIP; that feature is only useful with the multi-file-update feature which is not accessible through <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a>. See the note about this in our class doc header. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if and only if successfully parsed config source and validated all settings including <code>final_validator_func() != S_FAIL</code>; and defaults were also all individually valid. If <code>true</code>, and <code>final_validator_func() == S_ACCEPT</code>, then <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> shall return the parsed <code>Value_set</code>. If <code>true</code>, but <code>final_validator_func() == S_SKIP</code>, then <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#ae3576d329b71639e6acf38bb7a80e000" title="Returns (always the same) reference to the managed Value_set structure.">values()</a> shall return the default-cted <code>Value_set</code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00301">301</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<a id="ae3576d329b71639e6acf38bb7a80e000" name="ae3576d329b71639e6acf38bb7a80e000"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3576d329b71639e6acf38bb7a80e000">&#9670;&nbsp;</a></span>values()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">const Value_set &amp; <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">flow::cfg::Static_config_manager</a>&lt; Value_set &gt;::values</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns (always the same) reference to the managed <code>Value_set</code> structure. </p>
<p >Before successful <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html#aacacd2c0eddaf68d0dc5e0c1407572f5" title="Invoke this after construction to load the permanent set of static config from config sources includi...">apply()</a> these values will be at their defaults. Tip: It should be sufficient to pass around only the <code>const</code> ref obtained here all around the app &ndash; no <code>Value_set</code> copying should be needed.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. To reiterate: always the same reference is returned. </dd></dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00334">334</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a9e86f85d749892c9e55ae74e07e48a35" name="a9e86f85d749892c9e55ae74e07e48a35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e86f85d749892c9e55ae74e07e48a35">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Value_set &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html">Static_config_manager</a>&lt; Value_set &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Serializes (briefly) a <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> to a standard output stream. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Value_set</td><td>See <a class="el" href="classflow_1_1cfg_1_1Static__config__manager.html" title="A Config_manager-related adapter-style class that manages a simple config setup involving a single (t...">Static_config_manager</a> doc header. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to serialize. </td></tr>
    <tr><td class="paramname">val</td><td>Value to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="static__cfg__manager_8hpp_source.html#l00340">340</a> of file <a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>cfg/<a class="el" href="cfg__manager__fwd_8hpp_source.html">cfg_manager_fwd.hpp</a></li>
<li>cfg/<a class="el" href="static__cfg__manager_8hpp_source.html">static_cfg_manager.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Mar 28 2025 22:55:35 for Flow by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
